requirejs.config({
    baseUrl: '../js/libs',
    paths: {
        cxselect: '../plugins/cxSelect/jquery.cxselect',
        //cxselect: '../plugins/cxSelect/jquery.cxselect',

    },
    shim: { //引入没有使用requirejs模块写法的类库。backbone依赖underscore
        'jquery': {
            exports: '$'
        },
    	'cxselect': ['jquery']
    }
});

define(['jquery','cxselect'],function($){
	var enable=function(params){

 		var p = this,defaults = {
 			title:'这是标题名称',
			placement:"bottom",//左边方向
			containerClass:"customProver",//prover 最外层加样式 默认：customProver
			selects:['firstSeclect','secondSelect','thirdSelect','fourthSelect','fifthSelect'],//下拉选框组。输入 select 的 className
		    url: null,              // 列表数据文件路径（URL）或数组数据
		    data: null,             // 自定义数据
		    emptyStyle: null,       // 无数据状态显示方式
		    required: false,        // 是否为必选
		    firstTitle: '请选择',    // 第一个选项的标题
		    firstValue: '',         // 第一个选项的值
		    jsonSpace: '',          // 数据命名空间
		    jsonName: 'n',          // 数据标题字段名称
		    jsonValue: '',          // 数据值字段名称
		    jsonSub: 's',            // 子集数据字段名称


		   // selectedVal:[{"n":'1-1',"v":'1-2'},{"n":"2-1",'v':"2-1"}],
			loadingHtml:'<div class="editableform-loading"></div>',	//加载模板	
			buttonsHtml:'<button type="button" class="btn btn-primary editable-submit"><i class="icon-ok icon-white" >确定</i></button>'+
    					'<button type="button" class="btn editable-cancel"><i class="icon-remove">取消</i></button>',//按钮Html	
 		};

 		p.params=$.extend(defaults,params);


 		p.setData=function(){
 			//当弹出框对完全弹出时触发该事件
 			params.container.on('shown.bs.popover', function () {
 				var idName=$(this).attr("aria-describedby");
 				var Opopover=$("#"+idName);
 				Opopover.addClass(p.params.containerClass);
 				//实现了数据联动效果
	 			Opopover.find(".editable-input").cxSelect({
				    selects: p.params.selects,
				    url: p.params.url,              // 列表数据文件路径（URL）或数组数据
				    data: p.params.data,             // 自定义数据
				    emptyStyle: p.params.emptyStyle,       // 无数据状态显示方式
				    required: p.params.required,        // 是否为必选
				    firstTitle:p.params.firstTitle,    // 第一个选项的标题
				    firstValue:p.params.firstValue,         // 第一个选项的值
				    jsonSpace: p.params.firstValue,          // 数据命名空间
				    jsonName: p.params.jsonName,          // 数据标题字段名称
				    jsonValue: p.params.jsonValue ,          // 数据值字段名称
				    jsonSub: p.params.jsonSub            // 子集数据字段名称
				});
	 			if (p.params.startEditableFn) {

	 			}
	 			//提交按钮方法	
				if (p.params.editableSubmitFn) {
					Opopover.find(".editable-submit").on("click",function(){
						var selectValues=[];
						Opopover.find(".form-control").each(function(){
							var tempValue=$(this).val();
							if (tempValue && tempValue!=null && tempValue.length>0) {
								selectValues.push(tempValue);
							};
						})
						//p  所有插件里面方法和变量
						//Opopover 弹出框对象
						//selectValues 选择数组值
	 					var flag=p.params.editableSubmitFn(p,Opopover,selectValues);

	 					if(flag){
	 						p.params.container.click();
	 					}

	 				})
				};
				//取消按钮方法
 				if (p.params.editableCancelFn) {
	 				Opopover.find(".editable-cancel").on("click",function(){
	 					//p  所有插件里面方法和变量
						//Opopover 弹出框对象
	 					var flag=p.params.editableCancelFn(p,Opopover);
	 					if(flag){
	 						p.params.container.click();
	 					}

	 				})
	 			}
			})
 		}
 		//selectHtml
 		p.AppendHtml=function(data){
 			// if(p.params.selectedVal!=null && p.params.selectedVal.length>0){
 			// 	var optionStrs=[];
 			// 	$.each(p.params.selectedVal,function(index,obj){
 			// 		var tempOptionStr='<option value="'+obj.v+'" selected>'+obj.n+'<option>'
 			// 		optionStrs.push(tempOptionStr);
 			// 	})
 			// }


 			var _temSelectHtml='<form class="form-inline editableform"><div class="control-group"><div><div class="editable-input"><span class="combodate">';
 			for(var i = 0, l = p.params.selects.length; i < l; i++){
 					_temSelectHtml+='<select class="form-control '+p.params.selects[i]+'" style="width:auto;"></select>';

 				// if(optionStrs[i]){
 				// 	_temSelectHtml+='<select class="form-control '+p.params.selects[i]+'" style="width:auto;">'+optionStrs[i]+'</select>';
 				// }else{
 				// 	_temSelectHtml+='<select class="form-control '+p.params.selects[i]+'" style="width:auto;"></select>';
 				// }
 				
 			}
 			_temSelectHtml+='</span></div><div class="editable-buttons">'+
 				p.params.buttonsHtml+
 				'</div></div><div class="editable-error-block"></div></form>';
 			//$(params.ContemplateHtml).find(".editable-input").html(_temSelectHtml);
 			return _temSelectHtml;
 		}
 		//设置弹出框
 		p.popoverModle=function(params){
 			if (params.input) {

 			}else{
 				params.container.popover({
 					trigger:'click',
 					title:params.title,
 					content:p.AppendHtml,
 					html:true,
                    placement:params.placement
 				})
 				p.setData();
 			};
 		};
 		//初始化执行
 		p.init=function(){
 			p.popoverModle(p.params);
 		}
 		p.init();
	};
	//初始化编辑
	$.fn.enable=function(params){
		return this.each(function() {
            var $this = $(this);
            if(!$this[0]) return;
            var p = {};
            if($this[0].tagName.toUpperCase() === "INPUT") {
                p.input = $this;
            } else {
                p.container = $this;
            }

           	new enable($.extend(p, params));

        });   		
	}
})